package huawei

// APP ID
// const app_id = "107955087"

// 认证信息格式字符串
const authorization_format = "Bearer ${access_token}"

// token获取
const api_token = "https://connect-api.cloud.huawei.com/api/oauth2/v1/token"

// 应用信息查询
const api_app_info = "https://connect-api.cloud.huawei.com/api/publish/v2/app-info"

// 文件上传地址获取
const api_upload_config = "https://connect-api.cloud.huawei.com/api/publish/v2/upload-url/for-obs"

// 应用提交发布
const api_app_submit = "https://connect-api.cloud.huawei.com/api/publish/v2/app-submit"

// 应用appid查询
const api_app_id = "https://connect-api.cloud.huawei.com/api/publish/v2/appid-list"

// 应用详情结果
type AppInfoResult struct {
	Ret       Ret        // 包含返回码及描述信息的JSON字符串，格式为{"code":retcode, "msg": "description"}，retcode为返回码，description为返回码描述信息
	AppInfo   AppInfo    // 应用基本信息
	AuditInfo AuditInfo  // 审核意见信息
	LangInfo  []LangInfo // 多种语言的应用信息
}

// 请求结果
type Ret struct {
	Code int
	Msg  string
}

// 应用基本信息
type AppInfo struct {
	// 0：已上架
	// 1：上架审核不通过
	// 2：已下架（含强制下架）
	// 3：待上架，预约上架
	// 4：审核中
	// 5：升级中
	// 6：申请下架
	// 7：草稿
	// 8：升级审核不通过
	// 9：下架审核不通过
	// 10：应用被开发者下架
	// 11：撤销上架
	ReleaseState            int    // 应用状态。
	DefaultLang             string // 应用的默认语言，取值参见语言类型。
	ParentType              int    // 应用的一级分类，固定ID，取值参见应用游戏分类。
	ChildType               int    // 应用的二级分类，固定ID，取值参见应用游戏分类。
	GrandChildType          int    // 应用的三级分类，固定ID，取值参见应用游戏分类。
	PrivacyPolicy           string // 隐私政策声明的网页地址。
	AppNetType              int    // 应用联网类型。1：单机 2：网游
	IsFree                  int    // 应用付费类型。1：免费 0：付费
	Price                   string // 应用价格，格式为{"countryCode":"price"}。countryCode为国家码，price为应用的价格。
	PublishCountry          string // 应用发布国家的国家码，多个国家以英文逗号分隔，例如：“CN,DE,MC”。
	ContentRate             string // 应用分级，Json格式，例如{"HW":"3+"}。
	IsAppForcedUpdate       int    // 应用是否强制升级。0：不强制 1：强制
	SensitivePermissionDesc string // 敏感权限说明。
	HispaceAutoDown         int    // 是否允许华为应用市场抓包。0：不允许 1：允许
	PublicationNumber       string // 版号信息。
	CultureRecordNumber     string // 文化部备案编号。
	DeveloperWebsite        string // 开发者官网。
	DeveloperNameCn         string // 开发者中文名称。
	DeveloperNameEn         string // 开发者英文名称。
	ElecCertificateUrl      string // 电子版权证书PDF地址。
	CertificateURLs         string // 代理版权证书图片地址列表，逗号分隔，最多5个。
	PublicationURLs         string // 版号证明，逗号分隔的地址，可以为图片或者PDF，最多3个。
	CultureRecordURLs       string // 文化部备案证明地址，图片或者PDF。
	UpdateTime              string // 更新时间，UTC时间格式：yyyy-mm-dd hh:mm:ss。
	VersionNumber           string // 版本号。
	FamilyShareTag          int    // 是否可以家庭共享。0：不可以；1：可以。只有分发区域包含中国大陆的应用返回1。
	WebGameFlag             int    // 该应用是否为网页游戏。0：否 1：是
	PrivacyRightsUrl        string // 隐私权利网址，即关于您的用户实施其权利的网站地址，如用户删除、修改、导出其个人数据的入口。
}

// 审核意见信息
type AuditInfo struct {
	AuditOpinion              string // 应用整体审核意见。
	CopyRightAuditResult      int    // 版权审核结果，0：通过；1：不通过。只有在中国大陆地区发布的应用才会返回。
	CopyRightAuditOpinion     string // 版权审核意见。只有在中国大陆地区发布的应用才会返回。
	CopyRightCodeAuditResult  int    // 版号审核结果，0：通过；1：不通过。只有在中国大陆地区发布的应用才会返回。
	CopyRightCodeAuditOpinion string // 版号审核意见。只有在中国大陆地区发布的应用才会返回。
	RecordAuditResult         int    // 备案审核结果，0：通过；1：不通过。只有在中国大陆地区发布的应用才会返回。
	RecordAuditOpinion        string // 备案审核意见。只有在中国大陆地区发布的应用才会返回。
}

// 包含多种语言的应用信息
type LangInfo struct {
	Lang          string // 当前语言，取值参考语言类型。
	AppName       string // 当前语言的应用名称。
	AppDesc       string // 当前语言的应用描述。
	BriefInfo     string // 当前语言的一句话简介。
	NewFeatures   string // 当前语言的新版本简介。
	Icon          string // 当前语言的图标地址。
	ShowType      int    // 当前语言的截图展现方式。0：竖屏；1：横屏。
	VideoShowType int    // 当前语言的视频展现方式。0：竖屏；1：横屏。
	IntroPic      string // 应用介绍的截图地址，多个地址以逗号隔开，最多不超过10个地址。
	IntroVideo    string // 应用的介绍视频地址和视频截图地址，最多5个视频，每个视频必须对应截图。例如：[{"vedioUrl":"XXX/app/000/000/375/20160512143416.mp4","frameUrl":"XXX/app/000/000/375/20160512143416.68439491.jpg"},{"vedioUrl":"/app/000/000/376/20160512143416.mp4","frameUrl":"/app/000/000/376/20160512143416.68439491.jpg"}]
	RcmdPic       string // 应用的推荐截图地址，多个地址以逗号隔开，最多不超过10个地址。
	RcmdVideo     string // 应用的推荐视频地址以及视频截图地址，最多5个视频，每个视频必须对应截图。例如：[{"vedioUrl":"XXX/app/000/000/375/20160512143416.mp4","frameUrl":"XXX/app/000/000/375/20160512143416.68439491.jpg"},{"vedioUrl":"/app/000/000/376/20160512143416.mp4","frameUrl":"/app/000/000/376/20160512143416.68439491.jpg"}]
}

// 文件上传配置结果
type uploadConfigResult struct {
	Ret     Ret
	UrlInfo uploadConfig
}

// 文件上传配置详情
type uploadConfig struct {
	ObjectId string             // 文件在文件服务器中的对象ID
	Url      string             // 文件的上传URL，格式为https://{domainname}.com/{objectId}。
	Method   string             // HTTP请求方法。获取文件上传地址时固定返回PUT。
	Headers  uploadConfigHeader // 使用文件上传URL上传文件到文件服务器时，请求头所需的参数，为JSON结构
}

// 文件上传头部配置详情
type uploadConfigHeader struct {
	Authorization     string `json:"Authorization"`        // 校验信息
	XAmzContentSha256 string `json:"x-amz-content-sha256"` // 文件对象内容的SHA256哈希值
	XAmzDate          string `json:"x-amz-date"`           // 文件上传地址生成的时间
	Host              string `json:"Host"`                 // 上传服务器地址
	UserAgent         string `json:"user-agent"`           // 用户代理
	ContentType       string `json:"Content-Type"`         // 对象内容的类型
}

// 应用提交结果
type SubmitResult struct {
	Ret Ret
}

// 应用Id查询结果
type AppIdResult struct {
	Ret    Ret
	Appids []AppIdInfo `json:"appids"`
}

type AppIdInfo struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}
